perm filename LISP2.SLI[S78,JMC] blob
sn#356689 filedate 1978-05-26 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .require "memo.pub[let,jmc]" source
C00004 ENDMK
C⊗;
.require "memo.pub[let,jmc]" source
.NOFILL
%2alt x ← qif qn x ∨ qn qd x qthen x qelse qa x . alt qdd x%1
(DEFUN ALT (X) (COND
((OR (NULL X) (NULL (CDR X))) X)
(T (CONS (CAR X) (ALT (CDDR X))))
))
alt[x] = [null[x] ∨ null[cdr[x]] → x; T → cons[car[x]; alt[cddr[x]]]
%2alt%1 (A B C D E) = (A C E)
.skip to column 1
%2mapcar[u,f] ← qif qn u qthen qnil qelse f[qa u] . mapcar[qd u,f]
%2maplist[u,f] ← qif qn u qthen qnil qelse f[u] . maplist[qd u,f]
%2diff[exp,var] ← qif qat exp qthen [qif exp = var qthen 1 qelse 0]
qelse qif qa exp = PLUS qthen
%1PLUS%2 . mapcar[qd exp, λx.diff[x,var]]
qelse qif qa exp = %1TIMES%2 qthen
%1PLUS%2.maplist[qd exp,λx. %1TIMES%2.maplist[qd exp,
λy.qif x = y qthen diff[qa y,var] qelse qa y]]
diff[%1(TIMES X (PLUS X Y 3)), X] = (PLUS (TIMES 1 (PLUS X Y 3))
%1(TIMES X (PLUS 1 0 0)))